[re:Invent 2019] EC2 Image Builder で複数コンポーネントを実行してみた #reinvent
こんにちは、コンサル部の望月です。
Image Builder おじさん化し、2本ブログを更新しました。
[re:Invent 2019] EC2 Image Builder でコンポーネントを作成してみた #reinvent
[re:Invent 2019] EC2 Image Builder で S3 からコンテンツをデプロイしてみた #reinvent
今回は、複数コンポーネントをイメージパイプラインで実行してみたいと思います。前回のコンポーネントで、OS アップデート、Apache インストール、コンテンツデプロイと行っていたので、これらの処理を 3 つのコンポーネントで分ける形で実行してみたいと思います。
上記、2 本のブログでやった内容は本ブログでは詳しく触れないため、不明な点がある場合は上記ブログを参照いただくのがよいかと思います。
やってみた
コンポーネントの作成
コンポーネントの作成方法については、最初に紹介した 2 本のブログを参考にしてください。
ここでは Definition document に記入する内容について、説明します。
- OSアップデートコンポーネント
- build
- OSの最新化
- build
name: OS Update description: This is OS Update testing document. schemaVersion: 1.0 phases: - name: build steps: - name: InstallLinuxUpdate action: UpdateOS
- Apache インストールコンポーネント
- build
- Apache のインストール、有効化
- validate
- パッケージがインストールされたかの確認
- test
- 80 番ポートへ接続できることの確認
- build
name: Install Apache description: This is Install Apache testing document. schemaVersion: 1.0 phases: - name: build steps: - name: InstallApache action: ExecuteBash inputs: commands: - sudo yum install httpd -y - sudo systemctl enable httpd - sudo systemctl start httpd - name: validate steps: - name: CheckApache action: ExecuteBash inputs: commands: - rpm -qi httpd - name: test steps: - name: TestApache action: ExecuteBash inputs: commands: - curl localhost
- コンテンツデプロイコンポーネント
- build
- コンテンツの配置
- <バケット名> は自分の環境に合わせてください。
- コンテンツの配置
- validate
- コンテンツが配置されたかの確認
- test
- 80 番ポートへ接続し、HTTPステータスコードが 200 を返すことを確認
- build
name: Contents Deploy description: This is Contents Deploy testing document. schemaVersion: 1.0 phases: - name: build steps: - name: ContentsDeploy action: S3Download maxAttempts: 3 inputs: - source: s3://<バケット名>/contents/* destination: /var/www/html/ - name: validate steps: - name: CheckContents action: ExecuteBash inputs: commands: - ls /var/www/html/*html - name: test steps: - name: TestContents action: ExecuteBash inputs: commands: - HTTP_STATUS=`curl -I localhost -o /dev/null -w '%{http_code}\n' -s`; if [ $HTTP_STATUS -eq 200 ]; then echo $?; else echo $?; fi
- コンポーネントが 3 つ作成されたことを確認
イメージパイプラインの作成
イメージパイプラインの作成時に先程バージョンアップしたコンポーネントを指定します
- イメージパイプライン内の Build components から 『Browse Build components』をクリック
- Select build components から検索条件を『Created by me』に変更し、作成した 3 つのコンポーネントを選択する
- イメージパイプラインを作成したら『Run pipeline』を選択し、パイプラインを実行します
AMI の確認
EC2 サービスページから AMI が作成されていることを確認します。
- AMI を確認し、起動する
- 起動したインスタンスへアクセスし、デプロイしたコンテンツのページが表示されることを確認します
まとめ
EC2 Image Builder を使って複数コンポーネントを実行を行うことができました。
このようにコンポーネントを分けることで、サービスごとの AMI 管理が必要な環境で、共通化できる部分を分けてコンポーネント化することでコンポーネントの管理がしやすくなるかと思います。
まだまだ、やれることが多そうな Image Builder を引き続き触っていきたいと思います。